//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see http://www.gnu.org/licenses/.
//

#ifndef BOUNDARYLIST_H_
#define BOUNDARYLIST_H_

#include <omnetpp.h>

#include <vector>
#include <string>
#include "Split.h"
#include "NodeHandle.h"


class BoundaryList : public cSimpleModule {
public:

	virtual ~BoundaryList(){ b.clear(); }

	void initializeList(std::string& boundaries, const NodeHandle& owner);

	void add(const Split &split){ b.push_back(split); }

	int size() const { return b.size(); }

	const Split& getSplit(int i) const { return b.at(i); }

	void initialize(int stage);
	int numInitStages(void) const;
	void handleMessage(cMessage *msg){ delete msg; }

private:

	void parseBoundaries(std::string &boundaries);

	std::vector<Split> b; // list of boundaries
	NodeHandle owner;
};

#endif /* BOUNDARYLIST_H_ */

